package AccesoDatos;

import Entidades.*;
import java.util.*;
import java.sql.*;

public class datDocumento {

    private static Documento Construir(ResultSet tabla) throws Exception {
        Documento nuevo = new Documento();
        nuevo.setIdDocumento(tabla.getInt("IdDocumento"));
        nuevo.setIdTipoDocumento(tabla.getInt("IdTipoDocumento"));
        nuevo.setIdUsuario(tabla.getInt("IdUsuario"));
        nuevo.setIdMoneda(tabla.getInt("IdMoneda"));
        nuevo.setIdTipoMovimiento(tabla.getInt("IdTipoMovimiento"));
        nuevo.setSerieDocumento(tabla.getString("SerieDocumento"));
        nuevo.setNumeroDocumento(tabla.getString("NumeroDocumento"));
        nuevo.setFechaRegistro(tabla.getDate("FechaRegistro"));
        nuevo.setFechaEntrega(tabla.getDate("FechaEntrega"));
        nuevo.setMonto(tabla.getDouble("Monto"));
        nuevo.setEstado(tabla.getBoolean("Estado"));
        return nuevo;
    }

    public static int InsertarPedido(Documento objDocumento) throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            //PreparedStatement stm = cnn.prepareStatement("insert into Documento(IdUsuario,IdTipoMovimiento, IdTipoDocumento, Monto) values(?,2,1,?)");
            //stm.setInt(1, objDocumento.getIdUsuario());
            //stm.setDouble(2, objDocumento.getMonto());
            //stm.setInt(2, objDocumento.getIdMoneda());
            //stm.setInt(2, objDocumento.getIdTipoMovimiento());
            //stm.setString(4, objDocumento.getSerieDocumento());
            //stm.setString(5, objDocumento.getNumeroDocumento());
            //stm.setDate(6, objDocumento.getFechaEntrega());
            //stm.setBoolean(6, objDocumento.getEstado());            
            //int cont = stm.executeUpdate();
            //return cont;
            CallableStatement cstm = cnn.prepareCall("exec IngresarPedido " + objDocumento.getIdUsuario() + ", " + objDocumento.getMonto() + "");
            int cont = cstm.executeUpdate();
            return cont;
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }
    }

    public static Vector<Documento> ListaPedidosxCliente(int IdPersona) throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            Vector<Documento> lista = new Vector<Documento>();
            Statement stm = cnn.createStatement();
            ResultSet tabla = stm.executeQuery("select * from Documento d inner join Usuario u on d.IdUsuario = u.IdUsuario inner join Persona p on u.IdUsuario = p.IdPersona where p.IdPersona =" + IdPersona + "");
            while (tabla.next()) {
                lista.add(Construir(tabla));
            }
            return lista;
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }
    }
    
    public static int UltimoIdDocumento() throws Exception {
        Connection cnn = Conexion.getConexion();
        try {
            int IdPersona = 0;
            //Statement stm = cnn.createStatement(); 
            //ResultSet tabla = stm.executeQuery("Select max(IdPersona) from Persona");
            CallableStatement cstm = cnn.prepareCall("exec UltimoIdDocumento"); 
            ResultSet tabla = cstm.executeQuery();
            while (tabla.next()) {
                IdPersona = tabla.getInt("IdDocumento");
            }
            return IdPersona;
            //int cont = cstm.executeUpdate();
            //return cont;
        } catch (Exception e) {
            throw e;
        } finally {
            cnn.close();
        }
    }
}